unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TController = class; TStorage = class; TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; TBorder = class(TForm1) public procedure ConnectController(var aController: TController); end; TController = class private fBorder: TBorder; fStorage: TStorage; public procedure ConnectBorder(var aBorder: TBorder); procedure ConnectStorage(var aStorage: TStorage); end; // TStorage = class private fController: TController; public procedure ConnectController(var aController: TController); end; var Form1: TForm1; implementation {$R *.dfm} // border procedure TBorder.ConnectController(var aController: TController); begin Self.fController := aController; end; // controller procedure TController.ConnectBorder(var aBorder: TFormBase); begin Self.fBorder := aBorder; end; // procedure TController.ConnectStorage(var aStorage: TStorage); begin Self.fStorage := aStorage; end; // storage procedure TStorage.ConnectController(var aController: TController); begin Self.fController := aController; end; // end.